2.开始 |
您所在的位置:网站首页 › python 38 中文文档 › 2.开始 |
开始
简单的使用
如果你已经安装好Python 和 Selenium,可以这样开始使用: from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("http://www.python.org") assert "Python" in driver.title elem = driver.find_element_by_name("q") elem.send_keys("pycon") elem.send_keys(Keys.RETURN) assert "No results found." not in driver.page_source driver.close()把上面的脚本保存到文件(例:python_org_search.py),然后就可以这样运行它了: python python_org_search.py运行的python需要安装 selenium 模块 实例分析selenium.webdriver 模块提供了所有 WebDriver的实现,现在支持的WebDriver的实现有 Firefox,Ie,Chrome,Remote,Keys类提供了键盘的代码(回车,ALT,F1等等) from selenium import webdriver from selenium.webdriver.common.keys import Keys然后我们创建一个Firefox的实例: driver = webdriver.Firefox()driver.get方法会导向给定的URL的页面,WebDriver会等待页面完全加载完(就是onload函数被触发了),才把程序的控制权交给你的测试或者脚本。 但是如果你的页面用了太多的AJAX,那么这个机制就没什么卵用了,因为它不知道页面到底是什么时候加载完。 driver.get("http://www.python.org")WebDrive提供了一系统类似于find_element_by_*的方法来寻找页面元素,例如,我们利用find_element_by_name方法,通过元素的name属性来定位一个文本输入框元素。 更详细的寻找元素的方法可以参阅 第四章-元素定位: elem = driver.find_element_by_name("q")接着我们发送了一些字符,类似于用键盘直接输入。特殊的键盘符我们可以导入selenium.webdriver.common.keys,然后用Keys类来表示: elem.send_keys("pycon") elem.send_keys(Keys.RETURN)提交页面之后我们应该确认一下是否有返回,为了确定有东西返回,我们在这里下一个断言: assert "No results found." not in driver.page_source最后浏览器窗口被关闭了,你也可以调用quit方法来代替close,区别在于quit会退出整个浏览器,而close只会关闭一个标签,但是如果浏览器只有一个标签,那么这两个方法完全一样,都会关闭整个浏览器。 driver.close() 使用Selenium测试Selenium经常被用来写测试用例,它本身的包不提供测试的工具或者框架。我们可以用Python的单元测试模块来编写测试用例。 另一个工具/框架的选择是??? (原文:The other options for a tool/framework are py.test and nose.) 在本章节我们使用unittest做框架,下面是一个用unittest模块改进后的例子,是对 python.org 函数搜索功能的测试: import unittest from selenium import webdriver from selenium.webdriver.common.keys import Keys class PythonOrgSearch(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() def test_search_in_python_org(self): driver = self.driver driver.get("http://www.python.org") self.assertIn("Python", driver.title) elem = driver.find_element_by_name("q") elem.send_keys("pycon") elem.send_keys(Keys.RETURN) assert "No results found." not in driver.page_source def tearDown(self): self.driver.close() if __name__ == "__main__": unittest.main()你可以在shell里运行这个测试用例: python test_python_org_search.py . ---------------------------------------------------------------------- Ran 1 test in 15.566s OK上面的结果表明我们的测试用例成功执行了 实例分析脚本的开头我们引入了所有需要的模块,单元测试是python内置的基于Java's JUnit的模块,提供了组织单元测试的框架。 selenium.webdriver模块提供了WebDriver的所有实现: Firefox,Ie,Chrome,Remote,Keys类提供了键盘的代码(回车,ALT,F1等等): import unittest from selenium import webdriver from selenium.webdriver.common.keys import Keys测试用例类继承了unittest.TestCase类,这表明这个类是一个测试用例: class PythonOrgSearch(unittest.TestCase):setUp函数进行了初始化,你将要在这个类里编写的所有测试方法都要先调用这个方法,接着我们创建了一个Firefox WebDriver实例: def setUp(self): self.driver = webdriver.Firefox()接下来是测试用例的方法,它应该总是以字符'test'开始. 方法的第一行 本地引用了 setUp方法中创建的driver对象: def test_search_in_python_org(self): driver = self.driverdriver.get方法会导向给定的URL的页面,WebDriver会等待页面完全加载完(就是onload函数被触发了),才把程序的控制权交给你的测试或者脚本。 但是如果你的页面用了太多的AJAX,那么这个机制就没什么卵用了,因为它不知道页面到底是什么时候加载完。 driver.get("http://www.python.org")下一行是个断言,确认页面标题里是否有'Python'这个单词: self.assertIn("Python", driver.title)WebDrive提供了一系统类似于find_element_by_*的方法来寻找页面元素,例如,我们利用find_element_by_name方法,通过元素的name属性来定位一个文本输入框元素。 更详细的寻找元素的方法可以参阅 第四章-元素定位: elem = driver.find_element_by_name("q")接着我们发送了一些字符,类似于用键盘直接输入。特殊的键盘符我们可以导入selenium.webdriver.common.keys,然后用Keys类来表示: elem.send_keys("pycon") elem.send_keys(Keys.RETURN)提交页面之后我们应该确认一下是否有返回,为了确定有东西返回,我们在这里下一个断言: assert "No results found." not in driver.page_source最后浏览器窗口被关闭了,你也可以调用quit方法来代替close,区别在于quit会退出整个浏览器,而close只会关闭一个标签,但是如果浏览器只有一个标签,那么这两个方法完全一样,都会关闭整个浏览器。 driver.close()Final lines are some boiler plate code to run the test suite: if __name__ == "__main__": unittest.main() 使用Selenium 的 remote WebDriver要使用remote WebDriver,你先要运行Selenium server,用下面这个命令: java -jar selenium-server-standalone-2.x.x.jar运行Selenium server时,你可以看到类似这样一条信息: 15:43:07.541 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub意思是说你可以用这个URL连接到 remote WebDriver,下面是一些例子: from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME) driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.OPERA) driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.HTMLUNITWITHJS)desired_capabilities 是一个dict,如果你不使用默认的dict,你可以自己指定值: driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities={'browserName': 'htmlunit', 'version': '2', 'javascriptEnabled': True}) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |